#pragma once

#include <pthread.h>
#include "task_msg.h"
#include "thread_queue.h"

class thread_pool{
public:
    // 构造函数，初始化线程池，开辟thread_cnt个
    thread_pool(int thread_cnt);

    // 析构函数
    ~thread_pool();

    //  获取一个thead
    thread_queue<task_msg>* get_thread();

    // 发送一个NEW_TASK任务给所有的线程
    void send_task(task_func func, void* args=NULL);

private:
    // 当前的thread_queue的集合(_queues是当前thread_pool全部的消息任务队列头指针)
    thread_queue<task_msg>** _queues;

    // 线程个数
    int _thread_cnt;

    // 线程ID
    pthread_t* _tids;

    //当前选中的线程队列下标
    int _index;

};